Claude Code
上下文工程深度分析

上下文工程是Agent成功的关键

Claude Code逆向工程研究 | Drew Breunig等研究成果汇总

一、上下文工程概述

核心观点:Agent能否有满意的交付,关键就在于能否理解上下文。

什么是上下文?如果把prompt当成一种指令、一次对话,那么上下文就是为每次对话提供足够的语境支持

上下文工程挑战:

  • 一轮Agent Loop产生 84,247 字节的上下文
  • 一次重构任务需要多轮Agent Loop
  • 主Agent + SubAgent各有独立上下文
  • 需要协调不同Agent之间的上下文传递

二、上下文工程的四大痛点

1. 上下文中毒

当模型虚构了工具调用状态信息并被写入上下文时,在多轮循环中,模型可能会把错误信息误认为是事实反复引用。

2. 情境干扰(上下文过长)

随着上下文超过10万个token,大模型倾向于多步骤生成推理,而非用于检索。

3. 语境混淆(多余信息过多)

配置了数十个MCP函数时,调用工具决策的准确性会大幅下降。

4. 语境冲突(多个信息源)

多Agent协作时,不同Agent提供的信息可能存在冲突。

三、Claude Code上下文结构六大模块

模块 作用
1. 系统信息内容 系统身份、安全策略、交互规范、代码风格、工具指南等
2. 会话延续上下文 之前会话历史、中断原因、八段式压缩上下文
3. 工具调用和反馈 工具调用参数、执行反馈、SubAgent信息、TodoList状态
4. 已验证关键节点 基于工具调用、日志汇总的已完成任务
5. 用户请求 按时间顺序结构化的用户最新请求
6. 系统信息 用户近期操作、打开/点击的文件

四、上下文更新机制

整个机制流程:

用户操作/系统事件 → 事件分类 → WD5分发处理 → K2创建消息 → 消息队列 → nO主循环 → wU2压缩判断 → Ie1上下文注入 → API调用 → 响应处理

核心步骤:

  • 事件触发:WD5函数作为事件分发中心
  • 消息创建:K2函数创建对应提示词
  • 主循环控制:nO函数控制整体流程
  • 压缩判断:wU2函数判断是否需要压缩
  • 上下文注入:Ie1函数按需注入上下文

五、上下文更新的三大原则

1. 事件驱动
  • 文件操作、工具执行、用户输入等触发事件
  • WD5函数作为事件分发中心
  • 每个事件对应相应的提示词模板
  • 内存紧张时触发紧急压缩机制
2. 实时响应
  • K2函数立即创建对应提示词
  • 提示词被塞到消息队列
  • 每次API调用前重新注入最新上下文
  • 主循环多处设置中断点支持实时交互
3. 按需注入
  • 只在触发事件时才生成提示词,只注入需要的提示词
  • 消息队列将 system-reminder 标记的消息放在最前面
  • Ie1函数只在存在相关事件队列时才进行注入

六、上下文压缩机制

压缩触发方式(qH1函数):

触发方式 触发条件
自动触发 主循环调用 wU2 判断达到 token 使用阈值
手动触发 用户输入 /compact 命令,可传递压缩要点
系统触发 系统检测到内存压力超过阈值,触发紧急压缩

压缩流程三阶段:

  • 阶段一:分析 - 消息分类、多维度分析、Token计算
  • 阶段二:执行 - 生成压缩提示词、整合要点、模型调用
  • 阶段三:上下文重建 - 重要文件恢复、状态恢复、核心提示保护

七、多Agent协调机制

Task工具架构:

类型 特点
串行共享Agent todo + Agent Loop 回调,串行执行,上下文共享
并行隔离Agent Task工具,并行执行,上下文不共享

避免上下文冲突的三大机制:

  • 隔离机制:独立会话ID、空消息历史、只继承必要环境信息
  • 状态管理:无状态设计、单向通信、UH1函数管理多Agent并发
  • 结果处理:独立收集、智能排序、KN5函数智能合成

八、总结与启示

Claude Code上下文工程核心要素:

核心要素 实现方式 解决问题
结构化上下文 六大模块清晰分层 语境混淆
事件驱动更新 实时响应 + 按需注入 时效性、准确性
智能压缩 专用压缩模型 + 三阶段压缩 上下文过长
多Agent隔离 独立环境 + 单向通信 语境冲突
关键节点验证 已验证任务节点记录 上下文中毒
关键设计思想:精准控制、层次分明、动态平衡、隔离协作、容错机制

谢谢观看

Questions & Answers

Claude Code上下文工程深度分析